package com.chen.utils.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;

/**
 * 策略配置表
 * @author: Long
 * @date: 2023/7/23 18:21
 **/
@Data
@TableName("strategy_info")
public class StrategyInfo implements Serializable {

    /**
     * 表主键
     */
    @ApiModelProperty("表主键")
    @TableId(value = "id", type = IdType.ASSIGN_UUID)
    private String id;

    /**
     * 名称
     */
    @ApiModelProperty("名称")
    @TableField("name")
    private String name;

    /**
     * 作者
     */
    @ApiModelProperty("作者")
    @TableField("author")
    private String author;

    /**
     * 文件包名
     */
    @ApiModelProperty("文件包名")
    @TableField("parent_path")
    private String parentPath;

    /**
     * 忽略的表前缀集，已英文的逗号分隔
     */
    @ApiModelProperty("忽略的表前缀集，已英文的逗号分隔")
    @TableField("ignore_table_prefixs")
    private String ignoreTablePrefixs;

    /**
     * 是否开启Swagger，默认false -> 不开启
     */
    @ApiModelProperty("是否开启Swagger，默认false -> 不开启")
    @TableField("enable_swagger")
    private Boolean enableSwagger;

    /**
     * Mapper类的父类全限定名
     * 如：com.chen.common.mybatis.scope.ProBaseMapper
     */
    @ApiModelProperty("Mapper类的父类全限定名")
    @TableField("super_mapper_class")
    private String superMapperClass;

    /**
     * 逻辑删除的列名，默认：del_flag
     */
    @ApiModelProperty("逻辑删除的列名，默认：del_flag")
    @TableField("logic_delete_column_name")
    private String logicDeleteColumnName;

    /**
     * 乐观锁的列名，默认：revision
     */
    @ApiModelProperty("乐观锁的列名，默认：revision")
    @TableField("version_column_name")
    private String versionColumnName;

    /**
     * 列标注
     * 如：new Column("tenant_id", FieldFill.INSERT)
     */
    @ApiModelProperty("列标注, 如：new Column(\"tenant_id\", FieldFill.INSERT)")
    @TableField("fills_list")
    private String fillsList;

    /**
     * 是否开启Lombok，默认false -> 不开启
     */
    @ApiModelProperty("是否开启Lombok，默认false -> 不开启")
    @TableField("enable_lombok")
    private Boolean enableLombok;

    /**
     * service 实现类父类
     */
    @ApiModelProperty("service 实现类父类")
    @TableField("super_service_impl_class")
    private String superServiceImplClass;

    /**
     * Entity包名
     */
    @ApiModelProperty("Entity包名")
    @TableField("entity_pack")
    private String entityPack;

    /**
     * Service包名
     */
    @ApiModelProperty("Service包名")
    @TableField("service_pack")
    private String servicePack;

    /**
     * ServiceImpl包名
     */
    @ApiModelProperty("ServiceImpl包名")
    @TableField("service_impl_pack")
    private String serviceImplPack;

    /**
     * Mapper包名
     */
    @ApiModelProperty("Mapper包名")
    @TableField("mapper_pack")
    private String mapperPack;

    /**
     * Boolean字段移除is前缀
     */
    @ApiModelProperty("Boolean字段移除is前缀")
    @TableField("ignore_boolean_prefix")
    private Boolean ignoreBooleanPrefix;
}
